今天一樣從Codewars的8kyu開始唄。
這一次的題目是找最新出現的8kyu的一題,前5天的練習應該都會是8kyu啦ˊ_>ˋ
後面的話就會7以下惹,慢慢開始增難了,各位客官慢慢看囉(好像根本沒有客官QAQ
今天的題目需求很簡單,他把User Story寫得啵棒好,今天有一個人類,他想要在河裡挖掘金子,對金子,ㄐㄧㄣ子不是ㄐㄧㄥ….沒..沒事
如果他今天挖到了就return true,如果沒挖到就return false
輸入會是string陣列。為甚麼我會知道呢? 因為他的題目框架長這樣
那我怎麼知道他的輸入會是甚麼樣子的呢?
實際上我們需要去問PO釐清需求,不過這次我們沒有PO所以我就看了他的test case。長這樣
接下來要拆解需求啦,需求看起來是只要陣列中有gold這個字串就return true
如果沒有就return false,所以需求只有一個
接下來開始實作吧! 把專案創建好之後,就把第一個測試案例名稱寫出來吧!
我們要從最簡單的第一步開始,老樣子,如果覺得一開始有點卡卡的就可以加入3A原則的註解唷!
接下來就可以寫Code,一開始Test Case中的Code會長這樣
而Production Code 就長這樣
老樣子,跑個測試,沒過很正常,commit一下
接下來把Production Code改一下,用最小步伐讓Test Case Pass吧!
接下來跑個測試,PASS!
來寫個第二個測試案例唄
接下來跑一下測試吧,一定是紅燈!
每一動之前就是commit一下
接下來用最簡單的方式改Production Code吧!
這一次我們用Linq的方式解決他,然後跑了一次測試,OK,Pass,現在來Commit一下吧
這段Code實在是看得很不順眼,所以先來Refactor一下唄!
看了看這段Code,如果你知道C#的一個新的功能就知道他可以變成這個樣子
把Production Code完成之後,接下來審視一下test code吧!
因為test code 也是我們的code 之後維護還是需要看他的!
Tips: 如果你有Resharper 那就用Ctrl +R + I讓他inline解決吧XD
改完test code之後
跑一下測試,all pass之後就commit唄
接下來寫第三個test case吧!
現在看了看我的測試案例,覺得心裡毛毛的,為甚麼?
因為我們沒有測試輸入stone時會發生什麼事情
也沒有輸入多個stone含有gold,也沒有輸入全都是gold的情形,於是就來補一下test cases吧!
跑過測試都All Pass 之後就再Commit一次吧!
然後再Codewars上提交! Pass!!
通過!
老樣子我最喜歡的部分就是去看看別人寫這題寫得如何XD
啊….對欸,我寫得…..好像又長了一點,看來我對C#新功能還不那麼熟悉呢QAQ
今天這一個題目真的太簡單了 O_O|||
改成明天開始找7kyu的題目好了,不知道會不會比較多一點點的需求XD
(我才不會說是因為題目越難我寫的時間就要越久呢~哼
(結果寫完打自己一開始說要寫五天8kyu的臉XD
git url :
https://github.com/SQZ777/Codewars_MainInTheWest
有興趣來看一下commit 紀錄吧XD
今天在煮飯的時候突然發現好像可以用影片的方式就可以偷懶了
啊不是 我是說 可以用比較清楚的方式 摁 對
可能找一天試試
不然貼圖片好累喔...
下一題,明天見!